#!/usr/bin/python
# -*- coding:utf-8 -*-
# @author  : micah
# @time    :  
# @function: 
# @version :


class MyList:
    def __init__(self):
        self.current = 0
        self.items = list()

    def add(self, value):
        self.items.append(value)

    def __iter__(self):
        # 在iter方法中需要返回一个迭代器的实例
        # iter只能返回对象
        return self

    def __next__(self):
        if self.current < len(self.items):
            item = self.items[self.current]
            # 获取到列表元素后加1
            self.current += 1
            return item
        else:
            # 可以自己手动的抛出一个异常
            # for循环如果接收到这个异常之后会自动break
            raise StopIteration


my_list = MyList()
my_list.add(1)
my_list.add(2)
my_list.add(3)

for item in my_list:
    print(item)

# 协程实现基于迭代器 不能做高并发IO
